#ifndef HAL_SYSCLK_H
#define HAL_SYSCLK_H

#include <stdint.h>
#include <stdbool.h>
#include <driverlib.h>

typedef enum {
    HAL_SYSCLK_SRC_XTAL,   // 外部晶振
    HAL_SYSCLK_SRC_INTOSC, // 内部振荡器
} hal_sysclk_src_t;

// PLL配置
typedef struct {
    hal_sysclk_src_t src;   // 时钟源
    uint8_t imult;          // PLL倍频
    uint8_t refdiv;         // 参考分频
    uint8_t odiv;           // 输出分频
    uint8_t sysdiv;         // 系统分频
    bool    pll_enable;     // 是否使能PLL
    uint32_t freq_in_hz;    // 输入频率（Hz）
} hal_sysclk_cfg_t;

/**
 * @brief 系统时钟初始化
 * @param cfg 时钟配置
 * @return true 成功，false 失败
 */
bool hal_sysclk_init(void);
//bool hal_sysclk_init(const hal_sysclk_cfg_t *cfg);

/**
 * @brief 获取SYSCLK时钟频率（Hz）
 */
uint32_t hal_sysclk_get_freq(void);

/**
 * @brief 获取LSPCLK频率（Hz）
 */
uint32_t hal_lspclk_get_freq(void);

#endif // HAL_SYSCLK_H
